package com.demo.java.OD301_350.OD305;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【五子棋迷】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146101450
 */
public class OdMain {
    public static void main(String[] args) {
        // 创建Scanner对象，读取用户输入
        Scanner sc = new Scanner(System.in);

        // 读取数组的大小n
        int n = sc.nextInt();
        // 换行，以处理后续的输入
        sc.nextLine();

        // 读取数组L，并将输入的字符串转为整数数组
        int[] L = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

        // 用于存储当前找到的最大连续长度
        int max = Integer.MIN_VALUE;
        // 用于记录当前位置与数组中心位置的距离，方便判断哪个位置离中心更近
        int midDistance = 0;
        // 用于存储最终返回的结果位置
        int res = -1;

        // 遍历数组
        for (int i = 0; i < L.length; i++) {
            // 只关注值为0的位置
            if (L[i] == 0) {
                // 计算当前位置的连续0的个数
                int total = countConsecutive(L, i, n);

                // 如果最大连续长度小于等于4，且符合条件则更新最大值和结果位置
                if (total <= 4 && (total > max || (total == max && Math.abs(i - L.length / 2) < midDistance))) {
                    // 更新最大连续长度
                    max = total;
                    // 更新结果位置
                    res = i;
                    // 更新与数组中心的距离
                    midDistance = Math.abs(i - L.length / 2);
                }
            }
        }

        // 输出结果
        System.out.println(res);
    }

    /**
     * 计算从当前索引位置开始，连续的target值的个数
     * @param arr 数组
     * @param index 当前检查的索引
     * @param target 目标值
     * @return 连续相同target的个数
     */
    private static int countConsecutive(int[] arr, int index, int target) {
        // 用于记录当前连续的target个数
        int total = 0;

        // 从当前索引位置向左检查，直到遇到不等于目标值的元素
        for (int j = index - 1; j >= 0 && arr[j] == target; j--) {
            total++;
        }

        // 从当前索引位置向右检查，直到遇到不等于目标值的元素
        for (int j = index + 1; j < arr.length && arr[j] == target; j++) {
            total++;
        }

        // 返回连续0的总数（左右包含当前位置）
        return total;
    }
}
